package wesi;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.TableCellRenderer;


/** 
 *   Stellt die Oberfläche fuer das Programm dar
 *  
 *   @author Markus Brenner   
 */
public class View extends Main{

	private static final long serialVersionUID = 1L;
	
	 final static String panel_sop = "SOP";
	 final static String panel_dispo = "Disposition";
	 final static String panel_simu = "Simulation";
	 final static String panel_aliste = "Auftragsliste";
	 final static String panel_adetails = "Auftragsdetails";
	 final static String panel_diag = "Durchlaufdiagramme";
	 	
	 public void addComponentToPane(Container pane) {
		
		 /** Klassen für die einzelnen Tab Reiter
		  *  werden instanziert und die Methoden
		  *  zum Erstellen der Oberflächen werden
		  *  aufgerufen
		  * */
		 		 
	    /** SOP - in eigene Klasse ausgelagert*/
	        TabSOP sop = new TabSOP();
	        sop.erstelleSOPPanel();
	    /** ---------------------------------------------------- */
	        
	    /** Disposition - in eigene Klasse ausgelagert */
	        TabDisposition tabdispo = new TabDisposition();
	        tabdispo.erstelleDispoPanel();
	    /** ---------------------------------------------------- */ 
	        
	    /** Simulation - in eigene Klasse ausgelagert*/	        	        
	         TabSimulation simulation = new TabSimulation();
	         simulation.erstelleSimulationPanel();	        
	    /** ---------------------------------------------------- */
	        
	     /** Auftragsliste */
	 		TableCellRenderer defaultRenderer;
			defaultRenderer = JTableAuftragsdatei.getDefaultRenderer(JButton.class);
			
			JTableAuftragsdatei.setDefaultRenderer(JButton.class, new Auftragsdatei.JTableButtonRenderer(defaultRenderer));
			JTableAuftragsdatei.addMouseListener(new Auftragsdatei.JTableButtonMouseListener(JTableAuftragsdatei));
			
			card_aliste.getViewport().add(JTableAuftragsdatei);
	     /** -------------------------------------------------------------------- */
	        
	     /** Auftragsdetails */
	     /** -------------------------------------------------------------------- */
	        
	     /** Durchlaufdiagramme */
			TabDurchlaufdiagramme durchlauf = new TabDurchlaufdiagramme();
			durchlauf.richteDUDIPanelEin();
	     /** -------------------------------------------------------------------- */
			
	        
	        //einzelne Tabs hinzufügen
	        tabbedPane.addTab(panel_sop, jPanelPrimärBedarfsÄnderung);
	        tabbedPane.addTab(panel_dispo, split_dispo1);
	        tabbedPane.addTab(panel_simu, card_simu);
	        tabbedPane.addTab(panel_aliste, card_aliste);
	        tabbedPane.addTab(panel_adetails, card_adetails);
	        tabbedPane.addTab(panel_diag, new JScrollPane(card_diag));
	        
	        //Tabs für Start deaktivieren
	        tabbedPane.setEnabledAt(1, false);
	        tabbedPane.setEnabledAt(2, false);
	        tabbedPane.setEnabledAt(3, false);
	        tabbedPane.setEnabledAt(4, false);
	        tabbedPane.setEnabledAt(5, false);
	        
	        //aktiviertes Tab auslesen
	        tabbedPane.addChangeListener(new ChangeListener() {
	        	   public void stateChanged(ChangeEvent e) { 
	        		   JTabbedPane tabbedPane = (JTabbedPane)e.getSource();
	        		   int indx = tabbedPane.getSelectedIndex(); 
	        		   // indx identifiziert den selektierten Tab.
	        		   System.out.println("Aktiviertes Tab: "+indx);
	        	   }
	        });
	        
//	        tabbedPane.addChangeListener(new dispoListener());
	       
	        //erstellte Tabs anzeigen
	        pane.add(tabbedPane);
	        
	        //wieder löschen
	        tabbedPane.setSelectedIndex(0);
	 }
	 
	 /**
	 * Create the GUI and show it.  For thread safety,
	 * this method should be invoked from the
	 * event dispatch thread.
	 */
	 private static void createAndShowGUI() {
	        //Create and set up the window.
	        JFrame frame = new JFrame("WeSi - Lernprogramm");
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	       	 
	        //Create and set up the content pane.
	        View window = new View();
	        window.addComponentToPane(frame.getContentPane());
	        //Display the window.
	        frame.setSize(1200, 950);
	        frame.setLocation(10, 10);
	        frame.setVisible(true);
	        frame.createBufferStrategy(2);
	}
	 public void show(){
        /* Use an appropriate Look and Feel */
        try {
            //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        } catch (UnsupportedLookAndFeelException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        /* Turn off metal's use of bold fonts */
        UIManager.put("swing.boldMetal", Boolean.FALSE);
         
        //Schedule a job for the event dispatch thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
	}	
}
